<?php
namespace Amis\other;

use Amis\Basics\AmisBasics;

class Avatar extends AmisBasics
{
    public string $type = 'avatar';

    public function className($className)
    {
        $this->className = $className;
        return $this;
    }


    public function style(string $style)
    {
        $this->style = $style;
        return $this;
    }

    /**
     * 具体细节可以参考 MDN 文档
     * https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit
     * @param string $fit
     * @return $this
     */
    public function fit(string $fit = 'cover')
    {
        if (in_array($fit, ['contain', 'cover', 'fill', 'none', 'scale-down']))
            $this->fit = $fit;
        return $this;
    }

    public function text(string $text)
    {
        $this->text = $text;
        return $this;
    }

    public function icon(string $icon = 'fa fa-user')
    {
        $this->icon = $icon;
        return $this;
    }

    public function src(string $src)
    {
        $this->src = $src;
        return $this;
    }

    /**
     * 形状，有三种 'circle' （圆形）、'square'（正方形）、'rounded'（圆角）
     * @param string $shape
     * @return $this
     */
    public function shape(string $shape = 'circle')
    {
        if (in_array($shape, ['circle', 'square', 'rounded']))
            $this->shape = $shape;
        return $this;
    }

    /**
     * 'default' | 'normal' | 'small'三种字符串类型代表不同大小（分别是48、40、32），也可以直接数字表示
     * @param string $size
     * @return $this
     */
    public function size(string $size = 'default')
    {
        if (in_array($size, ['default', 'normal', 'small']))
            $this->size = $size;
        return $this;
    }

    /**
     * 控制字符类型距离左右两侧边界单位像素
     * @param int $gap
     * @return $this
     */
    public function gap(int $gap = 4)
    {
        $this->gap = $gap;
        return $this;
    }

    /**
     * 图像无法显示时的替代文本
     * @param string $alt
     * @return $this
     */
    public function alt(string $alt)
    {
        $this->alt = $alt;
        return $this;
    }

    /**
     * 图片是否允许拖动
     * @param bool $draggable
     * @return $this
     */
    public function draggable(bool $draggable)
    {
        $this->draggable = $draggable;
        return $this;
    }

    /**
     * @param string $crossOrigin
     * @return $this图片的 CORS 属性设置
     */
    public function crossOrigin(string $crossOrigin = '')
    {
        if (in_array($crossOrigin, ['anonymous', 'use-credentials', '']))
            $this->crossOrigin = $crossOrigin;
        return $this;
    }

    /**
     * 图片加载失败的字符串，这个字符串是一个New Function内部执行的字符串，参数是event（使用event.nativeEvent获取原生dom事件），
     * 这个字符串需要返回boolean值。设置 "return ture;" 会在图片加载失败后，使用 text 或者 icon 代表的信息来进行替换。
     * 目前图片加载失败默认是不进行置换。注意：图片加载失败，不包括$获取数据为空情况
     * @param string $onError
     * @return $this
     */
    public function onError(string $onError = '')
    {
        $this->onError = $onError;
        return $this;
    }
}